From 12b7d30a2d390fa4755828b6dc3748695c52a365 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Mon, 20 Mar 2017 19:56:22 +0100 Subject: [PATCH] GdkWaylandWindow: Force window titles to valid utf8 Use the new g_utf8_make_valid in case the given title is not valid utf8. Also bump the glib requirement to 2.51.5. --- configure.ac | 4 ++-- gdk/wayland/gdkwindow-wayland.c | 18 ++++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/configure.ac b/configure.ac index c91fb7d888..d59b6bc1c8 100644 --- a/configure.ac +++ b/configure.ac @@ -42,8 +42,8 @@ m4_define([gtk_binary_version], [4.0.0]) # required versions of other packages m4_define([glib_required_major], [2]) -m4_define([glib_required_minor], [49]) -m4_define([glib_required_micro], [4]) +m4_define([glib_required_minor], [51]) +m4_define([glib_required_micro], [5]) m4_define([glib_required_version], [glib_required_major.glib_required_minor.glib_required_micro]) m4_define([glib_min_required_minor], diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c index 5c09541951..17fb720472 100644 --- a/gdk/wayland/gdkwindow-wayland.c +++ b/gdk/wayland/gdkwindow-wayland.c @@ -3041,6 +3041,8 @@ gdk_wayland_window_set_title (GdkWindow *window, { GdkWindowImplWayland *impl; const char *end; + gsize title_length; + g_return_if_fail (title != NULL); if (GDK_WINDOW_DESTROYED (window)) @@ -3053,10 +3055,18 @@ gdk_wayland_window_set_title (GdkWindow *window, g_free (impl->title); - g_utf8_validate (title, MAX_WL_BUFFER_SIZE, &end); - impl->title = g_malloc (end - title + 1); - memcpy (impl->title, title, end - title); - impl->title[end - title] = '\0'; + title_length = MIN (strlen (title), MAX_WL_BUFFER_SIZE); + if (g_utf8_validate (title, title_length, &end)) + { + impl->title = g_malloc (end - title + 1); + memcpy (impl->title, title, end - title); + impl->title[end - title] = '\0'; + } + else + { + impl->title = g_utf8_make_valid (title, title_length); + g_warning ("Invalid utf8 passed to gdk_window_set_title: '%s'", title); + } gdk_wayland_window_sync_title (window); } -- 2.30.2